/*
 * Copyright (C) 2017 Baidu, Inc. All Rights Reserved.
 */
package com.software.myopiachildren;

import android.app.Application;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.os.Environment;
import android.support.multidex.MultiDex;

import com.inuker.bluetooth.library.BluetoothClient;
import com.software.myopiachildren.bean.UserInfo;
import com.software.myopiachildren.content.Constant;
import com.tencent.bugly.Bugly;
import com.tencent.bugly.beta.Beta;
import com.umeng.analytics.MobclickAgent;
import com.umeng.commonsdk.UMConfigure;
import com.umeng.socialize.PlatformConfig;

//  ┏┓　　　┏┓
//┏┛┻━━━┛┻┓
//┃　　　　　　　┃
//┃　　　━　　　┃
//┃　┳┛　┗┳　┃
//┃　　　　　　　┃
//┃　　　┻　　　┃
//┃　　　　　　　┃
//┗━┓　　　┏━┛
//    ┃　　　┃   神兽保佑
//    ┃　　　┃   代码无BUG！
//    ┃　　　┗━━━┓
//    ┃　　　　　　　┣┓
//    ┃　　　　　　　┏┛
//    ┗┓┓┏━┳┓┏┛
//      ┃┫┫　┃┫┫
//      ┗┻┛　┗┻┛
/**
 *
 * @author penglei
 * @date 2020/05/12
 */
public class App extends Application {
    // 友盟微信，QQ账号
    {
        PlatformConfig.setWeixin(Constant.WX_APP_ID, Constant.WX_APP_SECRET); //微信
        PlatformConfig.setQQZone(Constant.QQ_APP_ID, Constant.QQ_APP_KEY);  //QQ
    }

    private static final String TAG = "App";
    public static final boolean DEBUG = true;//是否调试？打印Log日志

    private static App appInstance;
    private static Context mContext;

    public static String localVersionName; //版本号名称

    public static UserInfo user;  // 用户信息
    public static String token; // 用户token
    public static String jwt_token; // 用户jwt_token

    // 全局变量：管理所有的BLE设备
    public static BluetoothClient mBluetoothClient;  // 蓝牙管理类


    @Override
    public void onCreate() {
        super.onCreate();

        MultiDex.install(this);
        mContext = getApplicationContext();
        appInstance = this;

        // 版本更新定义弹框
        initUpgradeDialog();
        // 获取版本号
        try {
            PackageInfo packageInfo = getApplicationContext().getPackageManager().getPackageInfo(getPackageName(), 0);
            localVersionName = packageInfo.versionName;
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 腾讯bugly
        initBugly();

        // 友盟
        initUment();

        mBluetoothClient = new BluetoothClient(getApplicationContext());

    }

    public static Context getContext() {
        return mContext;
    }

    public static App getAppInstance() {
        return appInstance;
    }

    public static App getIntstance() {
        if (appInstance == null) {
            appInstance = new App();
        }
        return appInstance;
    }


    /**
     * 初始化bugly
     */
    private void initBugly() {
        // 这里实现SDK初始化，appid换成自己在Bugly上申请的APPID；调试中将第三个参数改为true
        Bugly.init(getApplicationContext(), Constant.BUGLY_APP_ID, true);
    }

    /**
     * 友盟初始化
     */
    private void initUment() {
        /**
         * 初始化common库
         * 参数1:上下文，不能为空
         * 参数2:【友盟+】 AppKey
         * 参数3:【友盟+】 Channel
         * 参数4:设备类型，UMConfigure.DEVICE_TYPE_PHONE为手机、UMConfigure.DEVICE_TYPE_BOX为盒子，默认为手机
         * 参数5:Push推送业务的secret
         */
        UMConfigure.init(this, Constant.UMENG_APP_KEY, "Umeng", UMConfigure.DEVICE_TYPE_PHONE, Constant.UMENG_MESSAGE_SECRET);
        // 日志
        UMConfigure.setLogEnabled(true);
        // 选用AUTO页面采集模式
        MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO);
        // 支持在子进程中统计自定义事件
        UMConfigure.setProcessEvent(true);
    }


    /**
     * 定义版本更新弹框
     */
    private void initUpgradeDialog() {
        /**
         * 自定义初始化开关
         */
        Beta.autoInit = true;
        /**
         * true表示初始化时自动检查升级; false表示不会自动检查升级,需要手动调用Beta.checkUpgrade()方法;
         */
        Beta.autoCheckUpgrade = true;
        /**
         * 设置升级检查周期为60s(默认检查周期为0s)，60s内SDK不重复向后台请求策略);
         */
        Beta.upgradeCheckPeriod = 60 * 1000;
        Beta.strToastYourAreTheLatestVersion = "";
        Beta.strToastCheckUpgradeError = "";
        Beta.strToastCheckingUpgrade = "";
        Beta.upgradeDialogLayoutId = R.layout.dialog_upgrade_layout;
        /**
         * 设置启动延时为1s（默认延时3s），APP启动1s后初始化SDK，避免影响APP启动速度;
         */
        Beta.initDelay = 1 * 1000;
        /**
         * 设置通知栏大图标，largeIconId为项目中的图片资源;
         */
        Beta.largeIconId = R.mipmap.ic_launcher;
        /**
         * 设置状态栏小图标，smallIconId为项目中的图片资源Id;
         */
        Beta.smallIconId = R.mipmap.ic_launcher;
        /**
         * 设置更新弹窗默认展示的banner，defaultBannerId为项目中的图片资源Id;
         * 当后台配置的banner拉取失败时显示此banner，默认不设置则展示“loading“;
         */
        Beta.defaultBannerId = R.mipmap.shengjitubiao_nor;

        Beta.strUpgradeDialogUpgradeBtn = "立即更新";
        Beta.strUpgradeDialogCancelBtn = "稍后再说";
        /**
         * 设置sd卡的Download为更新资源保存目录;
         * 后续更新资源会保存在此目录，需要在manifest中添加WRITE_EXTERNAL_STORAGE权限;
         */
        Beta.storageDir = Environment
                .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
        /**
         * 已经确认过的弹窗在APP下次启动自动检查更新时会再次显示;
         */
        Beta.showInterruptedStrategy = true;
        /**
         * 只允许在MainActivity上显示更新弹窗，其他activity上不显示弹窗; 不设置会默认所有activity都可以显示弹窗;
         */
        Beta.canShowUpgradeActs.add(MainActivity.class);
//        Beta.canShowUpgradeActs.add(SetActivity.class);

        /**
         * 设置Wifi下自动下载
         */
        Beta.autoDownloadOnWifi = false;
    }

}
